Get LID by Phone

Convert a phone number to its corresponding WhatsApp LID.

GET
https://api.wawp.net/v2/lids/pn/{number}?access_token=123456789&instance_id=123456789&number=201234567890

Authentication Required

Login to swap the placeholders with your real Instance ID and Access Token.

Log In
Test /v2/lids/pn/{number} endpoint
GET
GET

No query parameters required

This endpoint doesn't expect data in the URL.

Best practices

  • Call this when onboarding a new contact to complete your database record.

  • Gracefully handle cases where no LID is returned.

The Stable Anchor: Phone to LID

The /v2/lids/pn/{number} endpoint performs a forward lookup, converting a traditional phone number into its corresponding privacy-preserving Lookup ID (LID).


🔮 Why This Matters

In the modern WhatsApp ecosystem, phone numbers are ephemeral but identities should be persistent.

  • The Problem: A user changes their number from +1-555-1234 to +44-7700-900000.
  • Old System: You lose track of them. Their chat history is orphaned.
  • New System: You query their LID using the old number, store it, then when they message you from the new number, you query the LID again and realize it's the same person.

🛠️ Implementation Pattern

The "Identity Merge" Workflow

  1. User A messages you from 15551234567@c.us.
  2. You call /v2/lids/pn/15551234567.
  3. Response: { lid: "999888777@lid", number: "15551234567" }.
  4. You store in DB: user_id = 999888777@lid, current_phone = 15551234567.
  5. 6 months later: User A changes their number to 447700900000.
  6. They message you again from 447700900000@c.us.
  7. You call /v2/lids/pn/447700900000.
  8. Response: { lid: "999888777@lid", number: "447700900000" }.
  9. Match Found: The LID is the same! You update current_phone but keep the same user_id.
  10. Result: Chat history, preferences, and purchase records are preserved.

⚠️ Availability

Not every phone number has an LID.

  • Modern Accounts: Created after 2023 usually have LIDs.
  • Legacy Accounts: Very old accounts might return null.
  • Best Practice: Always handle the case where this endpoint returns no LID. Fall back to using the @c.us JID as the primary key if necessary.

🚦 Performance

  • Caching: The mapping is relatively stable. Cache the result for at least 7 days.
  • Latency: ~100-300ms for a fresh lookup.

Request Parameters

Configure the parameters required to interact with this endpoint. All query and body arguments are listed below with their details.

URL Parameters

Passed in the URL query string
string

Your unique WhatsApp Instance ID

Example:
string

Your API Access Token

Example:
string

The phone number without @c.us (e.g. 201234567890)

Example:

Request Samples

Use these ready-to-go code snippets to integrate our API into your project quickly and efficiently. Choose your preferred language and library.

1const baseUrl = "https://api.wawp.net";
2const endpoint = "/v2/lids/pn/201234567890";
3const params = new URLSearchParams({
4 "instance_id": "123456789",
5 "access_token": "123456789"
6}).toString();
7
8
9fetch(`${baseUrl}${endpoint}${params ? '?' + params : ''}`, {
10 method: "GET",
11 headers: { "Content-Type": "application/json" },
12
13})
14 .then(async (response) => {
15 if (response.ok) {
16 const data = await response.json();
17 console.log("Success:", data);
18 return data;
19 }
20
21 // Error Handling
22 if (response.status === 400) {
23 console.error("Error 400: Bad Request - Missing Required Parameter(s)");
24 }
25 if (response.status === 400) {
26 console.error("Error 400: Bad Request (XML Format)");
27 }
28 if (response.status === 400) {
29 console.error("Error 400: Bad Request (Plain Text)");
30 }
31 if (response.status === 401) {
32 console.error("Error 401: Unauthorized - Invalid or Missing Access Token");
33 }
34 if (response.status === 401) {
35 console.error("Error 401: Unauthorized (XML Format)");
36 }
37 if (response.status === 404) {
38 console.error("Error 404: Not Found - Session Does Not Exist");
39 }
40 if (response.status === 404) {
41 console.error("Error 404: Not Found (XML Format)");
42 }
43 if (response.status === 500) {
44 console.error("Error 500: Internal Server Error - Unexpected Failure");
45 }
46 if (response.status === 500) {
47 console.error("Error 500: Internal Server Error (HTML)");
48 }
49 if (response.status === 502) {
50 console.error("Error 502: Bad Gateway - Connection Failed to Upstream");
51 }
52 if (response.status === 502) {
53 console.error("Error 502: Bad Gateway (XML Format)");
54 }
55
56 const errorText = await response.text();
57 console.error(`Error ${response.status}: ${errorText}`);
58 })
59 .catch((error) => console.error("Network Error:", error));
Interactive Samples
Ln 59, Col 1javascript

Expected Responses

Explore all possible responses and outcomes from the server. We have documented each status code with data examples to make success and error handling easier.

LID found
Type:
Scenario:
application/json
string *
string *

Example

{
"lid": "1234567890@lid",
"number": "201234567890"
}
Bad Request - Missing Required Parameter(s)
Unauthorized - Invalid or Missing Access Token
Not Found - Session Does Not Exist
Internal Server Error - Unexpected Failure
Bad Gateway - Connection Failed to Upstream
Previous TopicGet LIDs Mapping
Next TopicGet Phone by LID

Command Palette

Search for a command to run...